const path = require('path');

//在内存中根据指定的模块页面  生成一份内存中的首页  同时自动把打包好的bundle注入到页面底部
//如果要配置插件，需要在导出的对象中，挂载一个 plugins 节点
const htmlWebpackPlugin = require('html-webpack-plugin');
const ExtractTextPlugin = require("extract-text-webpack-plugin");

module.exports = {
    entry: path.join(__dirname, './src/app.jsx'),//入口文件
    output: {//指定输出选项
        path: path.resolve(__dirname, './dist'),//输出选项
        filename: 'bundle.js'//指定输出文件的名称
    },
    resolve: {
        alias: {
            page: path.resolve(__dirname, 'src/page'),
            component: path.resolve(__dirname, 'src/component')
        }
    },
    plugins: [//所有  webpack  插件的配置节点
        new htmlWebpackPlugin({
            template: path.resolve(__dirname, './src/index.html'),//指定模板文件路径
            filename: 'index.html'//设置生成的内存页面的名称
        }),
        new ExtractTextPlugin("index.css")
    ],
    module: {//配置所有第三方loader模块
        rules: [//第三方模块的匹配规则
            { test: /\.css$/, use: ExtractTextPlugin.extract({
                fallback: "style-loader",
                use: "css-loader"})
            },//处理CSS文件的loader
            { test: /\.jsx$/, use: {
                loader: 'babel-loader',
                options: {
                    presets: ['babel-preset-env','babel-preset-react']
                }
            }, exclude: /node_modules/ }, // 配置 Babel 来转换高级的ES语法
            { test: /\.(jpg|png|gif|bmp|jpeg)$/, use: 'url-loader?limit=7631&name=[hash:8]-[name].[ext]' }, // 处理 图片路径的 loader
            { test: /\.(ttf|eot|svg|woff|woff2)$/, use: 'url-loader' }, // 处理 字体文件的 loader 
            { test: /\.scss$/,use: ExtractTextPlugin.extract({
                fallback: 'style-loader',
                use: ['css-loader', 'sass-loader']})
            },//处理SCSS文件的loader
            
        ]
    }
}